<?php
/**
 * 自定义CMD命令 - HTTP后台管理系统 组件创建
*/

namespace houze\cmd;
use houze\Console;
use houze\SystemTips;

class Admin {
    /**
     * 命令行参数
    */
    private $argv=[];

    /**
     * 调用入口
    */
    public function run($argv) {
        $this->argv = $argv;
        if (empty($argv[2])) return Console::exit_error(SystemTips::CLICK_SERVER_1 . PHP_EOL);
        if ($argv[2] != 'start') return Console::exit_error(SystemTips::CLICK_SERVER_2 . PHP_EOL);

        $res = $this->copy_controller();
        if ($res) {
            $this->copy_zip();
            $html  = 'HTTP后台管理系统组件安装完成！'.PHP_EOL.PHP_EOL;
            $html .= '控制器地址为：/admin/system/login。'.PHP_EOL;
            $html .= '注意：请勿删除该控制器。'.PHP_EOL.PHP_EOL;
            $html .= '进入前端框架目录，请进行以下命令操作'.PHP_EOL;
            $html .= '安装依赖：yarn install'.PHP_EOL;
            $html .= '启动前端：yarn dev'.PHP_EOL.PHP_EOL;
            $html .= '开发完成，请进行以下命令操作'.PHP_EOL;
            $html .= '前端打包：yarn build'.PHP_EOL;
            $html .= '前端预览：yarn preview'.PHP_EOL;
        } else {
            $html  = 'HTTP后台管理系统组件已存在，请勿重复安装！'.PHP_EOL;
        }

        return Console::exit_error($html, false);
    }

    /**
     * 复制控制器到指定位置
    */
    private function copy_controller() {
        $controller_path = APP_PATH.'http'.DS.'controller'.DS.'Admin.php';

		if (is_file($controller_path)) return false;

		return copy(BUILT_PATH.'admin'.DS.'controller'.DS.'Admin.php', $controller_path);
    }
    
    /**
     * 解压前端框架到根目录
    */
    private function copy_zip() {
        if(is_dir(ROOT_PATH.'admin/')) return false;
        
        echo '正在解压前端框架代码到根目录...'.PHP_EOL;
        $zip = new \houze\Zip();
        return $zip->pull(BUILT_PATH.'admin'.DS.'view'.DS.'admin.zip', ROOT_PATH);
    }

}